The proliferation of large and complex computer programs has made source code transformation solutions increasingly attractive. Source code transformations are a form of meta-programming. Machine drive analysis and modification can relieve the manual developer of much of the burden of repetitive change. However, for source code transformation to be successful, the developer must be able to clearly define what and how modifications should be made. Herein lies the need for a transformation programming language.
Existing languages cannot attain high-fidelity. Many existing languages require expertise in the use of functional or other programming paradigms that are not intuitive for developers familiar with procedural languages. Existing languages are too generalized and focus on rewriting abstract syntax trees (AST) in a general form, without any provision for target language awareness in the transform language, resulting in a lack of expressiveness. Existing languages are not sufficiently powerful and flexible. Existing languages are based on the specification of rules in the form of predicates and actions. This limits the usefulness of the language and the ability to perform auxiliary calculations.